﻿using System;

namespace PoolKit
{
    /// <summary>
    /// </summary>
    /// <typeparam name="TResource"></typeparam>
    internal abstract class MutablePool<TResource> : Pool<TResource>
        where TResource : class
    {
        /// <summary>
        /// Adds a resource to the pool that has already been lent
        /// </summary>
        /// <param name="resource"></param>
        /// <exception cref="ObjectDisposedException"></exception>
        /// <exception cref="CannotAddResourceException"></exception>
        /// <exception cref="ArgumentNullException"></exception>
        public abstract void RegisterLentResource(TResource resource);
    }
}